OrbStack: macOS 上的 WSL
过去很长一段时间我都是通过 VSCode Remote 的方式在一台 Linux 服务器上做开发工作,因为无论是两仪还是 KernelSU,它们都无法在 macOS 本地进行编译。其实曾经有一段时间我是使用虚拟机进行开发的,我用 Parallel Desktop 启动一个没有窗口系统的 Ubuntu 系统,然后通过 ssh 连接到此系统完成开发;设置如下图:
虽然这种方式的确能工作,但总是不太让人满意;比如说它不支持动态磁盘空间,我得提前给它开辟一个大小足够的磁盘;而 Android 源码编译通常需要 200G,加上一些其他的,我至少得给它 500G;这样即使我只用了 350G,另外 150G 也浪费了;也许有人说,你可以给它只分配 380G 或者更少啊,但这样你又得经常调整磁盘空间,挺麻烦的。
有时候交叉编译比如 Rust cross,还需要用到 Docker。但 Docker Desktop for macOS 我实在是不想吐槽,启动特别慢不说,启动之后电脑风扇就狂转就像烧开水一样;因此我很少使用它。
前段时间,一个叫做 OrbStack 的 App 引起了我的注意,它是一个为 macOS 量身定制的 containers 和虚拟机应用,它的一个核心特点就是“快”。不论是容器还是虚拟机的启动速度都快得难以置信,以至于你登陆一个虚拟机的 shell 然后在 Linux 系统中执行命令跟你在 macOS 原生 shell 中执行 mac 系统的命令在速度上几乎没有任何区别。因为这种极致的快,它让我们以前觉得很荒谬的操作现在变成了可能。比如我们开发 Linux 相关的东西,有些工具在 macOS 上根本没有或者说执行起来很不方便,如果在以前,你告诉别人:“你可以启动一个 Linux 虚拟机,然后 ssh 登陆到虚拟机,然后在虚拟机里面执行命令,然后返回结果”,别人可能觉得你是个疯子,但现在这种操作在 OrbStack 里变得非常自然。只需要在你要执行的命令之前加上 orb
前缀,你就可以临时进入 Linux 系统然后执行一条命令然后获取其输出;这个过程你压根都感知不到此命令是在虚拟机执行的,它就像执行 macOS 原生命令一样。
下图是 OrbStack 官方给出的与其他软件的启动速度对比:
除了快之外,它还有一个特性就是“无缝操作”;这个 App 极致地细化了 macOS 系统与虚拟机的 Linux 系统直接的可交互性。你可以在 Linux 虚拟机里很方便地执行 macOS 的命令,在 macOS 执行虚拟机 Linux 中的命令也同样如此;另外,它在目录操作上也非常方便,在 Linux 内可以直接访问 macOS 的目录,如果你正在 macOS 的 shell 中某个目录操作,只要输入 orb
就可以进入到 Linux 系统并且保持当前目录 macOS 中一致。我打个比方,大家刷机 ROOT 肯定会用到一个叫做 magiskboot 的东西,它可以帮你操作 Android 的 boot 镜像;但 macOS 里无法执行这个命令,通过 OrbStack,我们之间 orb ~/magiskboot unpack boot.img
就可以对 boot.img 进行解包,非常方便。
还有一些可能感知不到的细节,比如它的 CPU / 内存 / 磁盘 都是按需使用的,你再也不用操心到底给虚拟机分配多少磁盘空间了,只要你的 macOS 还有空间它就可以工作,而且不占用一点额外的空间;还有内存,如果你给 Docker Desktop 8G 内存,你 8 G内存真的就没了,但 OrbStack 就不会,如果它不运行,那基本都不会用你的内存。
这个软件甚至改变了我部分的工作方式,比如:
1. 编译 Android 内核和 AOSP 都可以在本地完成,我不再使用远程服务器,不用把编译产物来回 scp。
2. 在编写 Rust 应用时,我开始使用 cross 进行交叉编译。以前我是用的是 cargo ndk,但这个其实挺不完善的,有些场景不支持;但 cross 要用到 docker,Docker Desktop 实在是太垃圾了我又不愿意用;现在这被 OrbStack 完美解决。
3. magiskboot 我可以直接在 macOS 上操作,不需要再把 boot.img 推送到手机然后在手机上操作。
这个软件其实还有一些其他的可能,比如你可以直接把它当作 eBPF 的实验开发环境。eBPF 交叉编译其实挺麻烦的,但通过 OrbStack 会被很好地解决。
一句话总结:OrbStack 就是 macOS 上的 WSL,它使得在 macOS 上使用 Linux 系统就像在 Windows 系统上使用 WSL 一样自然;如果你有过 WSL 的体验经历,一定能够理解它的方便之处。
这个软件现在是免费的,而且已经开放下载了,官网在:https://orbstack.dev (也可以阅读原文直接跳转)强烈推荐给有需求的各位童鞋!
最后,大家晚安!